#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>

/*
冒泡排序在一组需要排序的数组中，对两两数据顺序与要求顺序相反时，
交换数据，使大的数据往后移，每趟排序将最大的数放在最后的位置上
*/

void bubbleSort(int arr[], int n)
{
    //如果有一趟里面没有发生任何交换，说明这一趟元素有序跳出循环
    int temp, flag = 1;
    //总共要比多少趟
    for (int i = 0; i < n - 1 && flag == 1; i++)
    {
        flag = 0;
        //待排序位置的比较
        for (int j = 1; j < n - i; j++)
        {
            //如果后面那个比前面这个小就进行交换
            if (arr[j] < arr[j - 1])
            {
                //如果发生交换就把flag置为1
                flag = 1;
                temp = arr[j];
                arr[j] = arr[j - 1];
                arr[j - 1] = temp;
            }
        }
    }
}

void printArray(int arr[], int n)
{
    int i;
    for (i = 0; i < n; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

void main()
{
    int arr[10] = {2, 5, 6, 4, 3, 7, 9, 8, 1, 0};
    // int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    printArray(arr, 10);
    bubbleSort(arr, 10);
    printArray(arr, 10);
    return;
}